//导入fs模块，导入path模块
const fs=require("fs");
const path=require("path");

//定义正则表达式，分别匹配<style></style>和<script></script>

//style标签正则，其中/s匹配空白字符，/S匹配非空白字符，*表示匹配任意次数
const regStyle=/<style>[\s\S]*<\/style>/
//script标签正则
const regScript=/<script>[\s\S]*<\/script>/

//读取需要被处理的HTML文件
fs.readFile(path.join(__dirname,"./clock/index.html"),"utf8",(error,dataStr)=>{
    if(error!==null)
    {
        return console.log("读取失败",error);
    }
    console.log("读取成功");
    //读取文件成功后，调用对应的三个函数方法，拆接触JS、CSS、HTML文件三个部分
    //拆分CSS内容
    resolveCSS(dataStr);
    //拆分JS内容
    resolveJS(dataStr);
    //拆分HTML内容
    resolveHTML(dataStr);
});

//定义处理CSS的方法——resolveCSS()
function resolveCSS(htmlStr){
    //使用正则表达式提取需要的内容
    const a=regStyle.exec(htmlStr);
    //其中a[0]就是我们需要的style内容
    //在得到style样式内容后，对其style标签进行替换
    const newCSS=a[0].replace("<style>","").replace("</style>","");
    //这样就会得到被抹去style标签的CSS内容
    //将JS内容写入index.js文件中
    fs.writeFile(path.join(__dirname,"./clock/index.css"),newCSS,(error)=>{
        if(error!==null)
        {
            return console.log("写入CSS失败",error);
        }
        console.log("写入CSS成功");
    });
}

//定义处理JS的方法——resolveJS()
function resolveJS(htmlStr){
    //使用正则表达式提取需要的内容
    const b=regScript.exec(htmlStr)
    //其中a[0]就是我们需要的JS内容
    //在得到JS内容后，对其script标签进行替换
    const newJS=b[0].replace("<script>","").replace("</script>","");
    //这样就得到了呗抹去script标签的JS内容
    //将JS内容写入index.js文件中
    fs.writeFile(path.join(__dirname,"./clock/index.js"),newJS,(error)=>{
        if(error!==null)
        {
            return console.log("写入JS失败",error);
        }
        console.log("写入JS成功");
    })
}

//定义处理HTML的方法——resolveHTML
function resolveHTML(htmlStr){
    //使用字符串的replace的方法，把内嵌的<style></style>和<script></script>标签，替换为外联的<link>和<script></script>
    const newHTML=htmlStr.replace(regStyle,'<link rel="stylesheet" href="./index.css"/>').replace(regScript,'<script src="./index.js"></script>');
    //将替换完成之后的html代码，写入到index1.html文件中
    fs.writeFile(path.join(__dirname,'./clock/index1.html'),newHTML,(error)=>{
        if(error!==null)
        {
            return console.log("写入文件失败",error);
        }
        console.log("写入文件成功");
    });

}
